Schema First
よくあるフロー
Schemaを記述する
resolverの型定義に従って、serverのAPIを実装
clientを実装
pros
Schemaをserver/clientの共通言語にできる
IRみたいな感じねmrsekut.icon
serverとclientが直接依存せず、interfaceに依存して実装する感じにできる
だから、独立に実装を進められる
テストもしやすい
特定のframeworkに依存しない
code firstだと依存するの?
実装言語に縛られない
cons
個々の問題は、それぞれtoolを使えば解決できる
しかし、そうするとtoolの数が膨大になって辛い、という流れ
Schemaとresolverの実装がズレないように保つのが大変
初期は良いが、Scheamが大きくなってくると辛い
Schemaを1つのfileに書かないといけないのでmodule化しづらい
再利用性が低い
そもそも手書きで書くのが大変
IDEのサポートがしょぼいと、DXが悪い
必ずしも最適なコードを生成できない
SDLに対して、複数のプログラミング言語の生成ができるからか
Schemaのversion管理が大変
client/severがそれに追従しないといけない
フロー自体がそもそも煩雑
例
TypeScript
Go
Schema Firstの問題点
問題点を5つ挙げ、それぞれを解決するtoolを示す
toolを使えば解決できるけど、結果的に周辺toolが増えすぎて辛いよね
だからCode Firstやってみると良いんじゃない?
という流れ